W mojej pracy pokażę ilość zgonów z powodu zażywania narkotyków w przeliczeniu na 100,000 osób w poszczególnych krajach. Ramka danych, której użyję pochodzi ze strony ourworldindata.org : https://ourworldindata.org/grapher/death-rates-from-drug-use-disorders?tab=table

Zawiera kolumnę z nazwą kraju, rokiem i ilością zgonów w przeliczeniu na 100,000 osób.

Najpierw dopasowuje nazwy krajów z kolumny tej ramki do nazw krajów w ramce z pakietu maps i wybieram dane z roku 2019.

setwd("C:\\Users\\rogal\\RStudio-workspace\\Hw3")
library(dplyr)
library(ggplot2)
library(maps)
library(plotly)

ramka<-read.csv("DrugsData.csv")
colnames(ramka)[4]<-"deaths"
ramka<- ramka %>% filter(Year==2019)
world<-map_data("world")

ramka$Entity <- ifelse(ramka$Entity == "United States", "USA", ramka$Entity)
ramka$Entity <- ifelse(ramka$Entity == "Cote d'Ivoire", "Ivory Coast", ramka$Entity)
ramka$Entity <- ifelse(ramka$Entity == "Czechia", "Czech Republic", ramka$Entity)
ramka$Entity <- ifelse(ramka$Entity == "United Kingdom", "UK", ramka$Entity)
ramka$Entity <- ifelse(ramka$Entity == "Congo", "Republic of Congo", ramka$Entity)
ramka$Entity <- ifelse(ramka$Entity == "Democratic Republic of Congo", "Democratic Republic of the Congo", ramka$Entity)

Teraz łączę dwie ramki, aby znajdował się tu każdy kraj, odrzucam Antarktydę, bo nie ma tam danych, a bardzo rzuca się w oczy. Następnie tworzę wykres, na którym kraje są pokolorowane zgodnie z liczbą zgonów w przeliczeniu na 100 000 osób. Używam skali logarytmicznej, aby różnice były lepiej widoczne.

left_join(world,ramka,by=c("region"="Entity"))->joined

joined<- joined %>% filter(long<=180, region!="Antarctica")

color_pal<- colorRampPalette(c("#b1f8d0", "#0b206e"))(100)


ggplot()+
  geom_polygon(data=joined, aes(x=long,y=lat,group=group,fill=deaths, text= paste("Country: ",region, "\n", "Deaths per 100,000 people:", deaths)), color="grey2",linewidth=0.1)+
  coord_map("mollweide")+
  scale_fill_gradientn(trans="log2",colors=color_pal) +
  theme_minimal()+
  theme(axis.title.x = element_blank(),
        axis.text.x = element_blank(),
        axis.ticks.x = element_blank(),
        axis.title.y = element_blank(),
        axis.text.y = element_blank(),
        axis.ticks.y = element_blank(),
        legend.title= element_text(size=5))+
  labs(fill="Deaths per 100,000 people")->plot1

Dodaje opcje interaktywności :

ggplotly(plot1,tooltip = "text") %>% 
  layout(title= list(text="Deaths from drug use per 100,000 people around the world in 2019", x=0.5, y=0.85, font=list(size=13)))->final_plot

Interaktywna mapa:

Wnioski z mapy nie są dla mnie zaskakujące, mianowicie USA jest krajem z największą śmiertelnością z powodu narkotyków.